/**
 * 编写好的重载
 * 1、可能的情况下，总是倾向于使用联合类型的参数而不是重载参数
 * */

// function len(s: string): number
// function len(arr: any[]): number
// function len(x: any) {
//   return x.length
// }

function len(x: any[] | string) {
  return x.length
}

len('hello')
len([1, 2, 3])
len(Math.random() > 0.5 ? 'hello' : [1, 2, 3])